﻿using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ReadAndWriteTextToFiLe
{
    class Program
    {
        static Random rndNum = new Random();

        static void Main(string[] args)
        {
            string fileName = CreateTextFileWithRandomNumbers();
            ReadAndWriteNumbersToNewFile(fileName);

            Console.ReadLine();
        }
        static string CreateTextFileWithRandomNumbers()
        {

            Console.WriteLine("Введите имя файла:");
            string fileName = Console.ReadLine() + ".txt";

            Console.WriteLine("Введите количество чисел:");
            string NotParsedNumbersAmount = Console.ReadLine();
            long numbersAmount = Int64.Parse(NotParsedNumbersAmount);

            StringBuilder FileWithNumbers = new StringBuilder();

            for (int i = 0; i < numbersAmount; i++)
            {
                int rndNum = RandomNumber();

                FileWithNumbers.Append(String.Format("{0} ", rndNum));
            }
            
            File.WriteAllText(fileName, FileWithNumbers.ToString());

            Console.WriteLine("Создан файл {0} c {1} случайных чисел", fileName, numbersAmount);
            Console.WriteLine("Нажмите Enter для создания файла с числами в обратном порядке");
            Console.ReadLine();

            return fileName;
        }

        static int RandomNumber()
        {  
            return rndNum.Next();
        }

        static void ReadAndWriteNumbersToNewFile(string fileName)
        {
            string numbersInFile = File.ReadAllText(fileName);
            string notParsedNumber = "";
            StringBuilder reverseNumbers = new StringBuilder();

            int a = 0;
            int b = 1;    
            
            while (a < numbersInFile.Length && b <= 100)
            {                
                //конец числа
                if (numbersInFile[a] == ' ')
                {
                    int number = Int32.Parse(notParsedNumber);
                    reverseNumbers.Insert(0, String.Format("{0} ", number));
                    notParsedNumber = "";
                }

                //добавляем к числу след цифру
                else
                {
                     notParsedNumber += numbersInFile[a];
                }

                if (a == numbersInFile.Length / 100 * b)
                {                    

                    Console.WriteLine("{0}%", b);
                    b++;                    
                }                

            a++;

            }            

            File.WriteAllText("(reversed) " + fileName, reverseNumbers.ToString());

            Console.WriteLine("Файл (reversed) {0} создан и сохранён. Нажмите Enter для выхода", fileName);

            return;
                                       
        }
    }
}
